13.2.3 在集群节点间共享存储

Docker能够集成外部存储系统,使得集群间节点共享外部存储数据变得简单。例如,独立存储LUN或者NFS共享可以应用到多个Docker主机,因此无论容器或者服务副本运行在哪个节点上,都可以共享该存储。图13.3展示了位于共享存储的卷被两个Docker节点共享的场景。接下来这些Docker节点可以将共享卷应用到容器之上。

构建这样的环境需要外部存储系统的相关知识,并了解应用如何从共享存储读取或者写入数据。

这种配置主要关注 数据损坏(Data Corruption)

基于图13.3,设想下面的场景:Node 1上的容器A在共享卷中更新了部分数据。但是为了快速返回,数据实际写入了本地缓存而不是卷中。此时,容器A认为数据已经更新。但是,在Node 1的容器A将缓存数据刷新并提交到卷前,Node 2的容器B更新了相同部分的数据,但是值不同,并且更新方式为直接写入卷中。此时,两个容器均认为自己已经将数据写入卷中,但实际上只有容器B写入了。容器A会在稍后将自己的缓存数据写入缓存,覆盖了Node 2的容器B所做的一些变更。但是Node 2上的容器B对此一无所知。数据损坏就是这样发生的。

86.png

图13.3 位于共享存储的卷被两个Docker节点共享

为了避免这种情况,需要在应用程序中进行控制。

results matching ""

    No results matching ""